package com.oceansoft.mobile.econsole.modules.news.service;

import com.oceansoft.mobile.econsole.modules.base.entity.Pager;
import com.oceansoft.mobile.econsole.modules.base.entity.Query;
import com.oceansoft.mobile.econsole.modules.base.entity.Result;
import com.oceansoft.mobile.econsole.modules.channel.entity.Channel;
import com.oceansoft.mobile.econsole.modules.news.entity.News;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import java.util.List;

/**
 * 新闻业务处理组件
 *
 * @author: chenw
 * @time: 14-4-29 上午11:04
 */
public interface INewsService {

    /**
     * 加载模块新闻栏目列表
     *
     * @return List<Channel>
     */
    List<Channel> loadAllChannels();

    /**
     * 新闻新闻
     *
     * @param news 新闻实体对象
     * @return int 新闻主键
     */
    Result save(News news);

    /**
     * 加载新闻栏目列表
     *
     * @param channelId 栏目ID
     * @param pageIndex 加载列表页数
     * @return Result
     */
    Result loadNewsByPage(int channelId, int pageIndex, String url);

    /**
     * 根据新闻ID加载详细信息
     *
     * @param id 新闻ID
     * @return Result
     */
    Result loadNewsById(String id);

    Result loadNewsById(long id);
    //    /**
    //     * 根据新闻ID加载详细内容
    //     *
    //     * @param newsId 新闻ID
    //     * @return Result
    //     */
    //    Result loadNewsByUrl(int channelId, String newsId);
    //

    /**
     * 分页加载新闻
     * @param query
     * @return
     */
    Pager<News> loadAllNewsByPage(Query query);
    
    /**
     * 分页加载栏目信息
     *
     * @param query Query
     * @return Pager
     */
    Pager<Channel> findChannelByPage(Query query);

    /**
     * 加载首页前N条图片新闻
     *
     * @param topSize 首页显示的条数,值小于0或大于5则重置为3
     * @return
     */
    Result loadTopImgNews(int topSize);
   
    /**
     * 删除新闻
     * @param newsId
     * @return
     */
    Result deleteNews(int newsId);
    
    /**
     * 发布新闻
     * @param newId
     * @return
     */
    Result pubNews(int newId);
    
    /**
     * 更新新闻
     * @param news
     * @return
     */
    Result updateNews(News news);
    
    String editorUpload(MultipartHttpServletRequest request) throws Exception;
    
    Result saveNewsBeforePub(News news);

    /**
     * 加载协查通报与预警防范
     * @param channel
     * @param pageIndex
     * @return
     */
    Result loadNewsByPage(String channel, int pageIndex);

    //
    //    /**
    //     * 加载模块新闻栏目列表
    //     *
    //     * @return List<Channel>
    //     */
    //    List<Channel> loadChannels(int moduleId);
}
